home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / ACORNUSERS / CBSA / INTERNET / ARCFIXER / ArcFixer-source < prev   
C/C++ Source or Header  |  1999-12-05  |  2KB  |  75 lines

  1. /* Archive fixer from the web */
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include "swis.h"
  6.  
  7. #define name1 argv[2]?argv[1]:bakname
  8. #define name2 argv[2]?argv[2]:argv[1]
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12.  FILE *IN,*OUT;
  13.  char ch=0,oldch=0;
  14.  char bakname[]="ArcFixed/arc";
  15.  printf("ArcFS (v1.02) archive fixer for web downloads\n");
  16.  printf("By Paul F. Johnson : paulf.johnson@ukonline.co.uk\n\n");
  17.  printf("This program should fix the problems which Windows based \n");
  18.  printf("browsers spew up (text on screen instead of a file).\n\n");
  19.  
  20.  if (argc>=2) {
  21.                if (!argv[2])
  22.                {
  23.                 printf("Creating new file (%s).\n",bakname);
  24.                 if (rename(argv[1],bakname))
  25.                  {
  26.                   printf("I cannot rename the input file\n");
  27.                   exit(1);
  28.                  }
  29.                 }
  30.                 printf("%s --> %s\n",name1,name2);
  31.                 if (!(IN=fopen(name1,"rb")))
  32.                 {
  33.                  printf("Unable to read the source file\n");
  34.                  exit(1);
  35.                 }
  36.                 if (!(OUT=fopen(name2,"w+b")))
  37.                 {
  38.                  printf("Unable to write the fixed file\n");
  39.                  exit(1);
  40.                 }
  41.                 oldch=getc(IN);
  42.                 ch=getc(IN);
  43.                 while (!feof(IN)) 
  44.                  {
  45.                   if (ch == 0x0a) 
  46.                   {
  47.                    if (oldch==0x0d)
  48.                    {
  49.                     putc(ch,OUT);
  50.                     ch=getc(IN);
  51.                    }
  52.                    else
  53.                    putc(oldch,OUT);
  54.                   }
  55.                   else
  56.                   putc(oldch,OUT);
  57.                   oldch=ch;
  58.                   ch=getc(IN);
  59.                  }
  60.                  putc(oldch,OUT);
  61.                  fclose(IN);
  62.                  fclose(OUT);
  63.                  printf("Jobs a good 'un.\n\n");
  64.                  _swi(OS_File,18,name1,0xddc)                 
  65.                 }
  66.                 else
  67.                 {
  68.                  printf("Usage\n");
  69.                  printf("\t\tArcFixer old/arc <new/arc> \n");
  70.                  printf("Extensions are not required though\n");
  71.                  exit(1);
  72.                 }
  73.  return 0;
  74. }
  75.